package com.yantong.service;

import com.yantong.utils.PageUtils;
import com.yantong.pojo.Order;
import com.yantong.pojo.IntegralLog;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 会员积分服务
 * @author kanghaixin
 * @date 2018/9/13.20:14
 */
public interface MemberIntegralService {

	/**
	 *
	 * 获得积分
	 * @param mid 会员ID
	 * @param quantity 积分数量
	 * @param orderId 订单ID
	 * @param detailed 具体项目说明
	 * @return
	 */
	int addMemberIntegral(Long mid, BigDecimal quantity, Long orderId, String detailed);

    /**
     *
     * 获得积分
     * @param mid 会员ID
     * @param quantity 积分数量
     * @param orderId 订单ID
     * @param detailed 具体项目说明
     * @return
     */
    int obtainIntegral(Long mid, double quantity, Long orderId, String detailed);

    /**
     * 赠送积分数
     * @param mid
     * @param price
     * @param credit
     * @param orderId
     * @param detailed
     * @return
     */
    int obtainIntegral(Long mid, Long centreId, BigDecimal price, Integer credit, Long orderId, String detailed);

    /**
     * 消费记录
     * @param mid
     * @param quantity
     * @param detailed
     * @return
     */
    int consumerIntegral(Long mid, double quantity, String detailed);

    /**
     * 流水列表数据
     * @param centreId
     * @param name
     * @param start
     * @param end
     * @param offset
     * @param limit
     * @return
     */
    PageUtils<IntegralLog> getIntegralLogs(Long centreId, Long teamId, String name, Date start, Date end, int offset, int limit);

	/**
	 * 流水列表数据(前台)
	 *
	 * @param mid
	 * @param start
	 * @param end
	 * @param offset
	 * @param limit
	 * @return
	 */
	PageUtils<IntegralLog> getIntegralLogsBefore(Long mid, Integer type, Date start, Date end, int offset, int limit);

    /**
     * 流水记录  不分页
     * @param centreId
     * @param name
     * @param start
     * @param end
     * @return
     */
    List<IntegralLog> listIntegralLogs(Long centreId, String name, Date start, Date end);

    /**
     * 获取会员积分数
     * @param mid
     * @return
     */
    double getMemberIntegral(Long mid);
    /**
     * 鲍凌宇
     *
     * 订单自动完成发放商品积分
     * @param mid        会员编号
     * @param centreId   站点
     * @param price      订单商品价格
     * @param credit     单个商品积分
     * @param id         订单id
     * @param productName 商品名称
     */
	int grantIntegralNew(Long mid, Long centreId, BigDecimal price, Integer credit, Long orderid, Long opid, String nickName, String productName);
	/**
	 * 鲍凌宇
	 *
	 * 根据会员查询当前站点的积分值
	 * @param id
	 * @return
	 */
	double getMemberIntegralNew(Long id);
	/**
	 * 鲍凌宇
	 *
	 * 退还积分
	 * @param order 订单信息
	 *        credit 最终退还积分值
	 *
	 */
	int returnIntegralNew(Order order, double credit);
	/**
	 * 购买商品消费积分
	 * @param order
	 * @param integral
	 */
	int consumerGrantIntegralNew(Order order, Integer integral);

	/**
	 * 购买商品消费积分
	 * @param order
	 * @param integral
	 */
	int consumerGrantIntegralNew2(Order order);

	/**
	 * 售后退还积分
	 * @param order
	 * @param deductcredit
	 */
	int afterReturnIntegralNew(Order order, Integer deductcredit);

	/**
	 *
	 * 获得积分
	 * @param mid 会员ID
	 * @param quantity 积分数量
	 * @param orderId 订单ID
	 * @param detailed 具体项目说明
	 * @return
	 */
	int addMemberIntegral(Long mid, BigDecimal quantity, Long orderId, String detailed, String date, boolean is_bq);

	/**
	 * 流水列表数据
	 * @param centreId
	 * @param name
	 * @param start
	 * @param end
	 * @param offset
	 * @param limit
	 * @return
	 */
	PageUtils<IntegralLog> getIntegralLogs(Long centreId, Long teamId, Long mid, String name, Date start, Date end, int offset, int limit);

}
